
#include"head.h" 

/*查询订单号*/
void search_id(int sockfd,int id)
{
    int i=0;
    char buf[32];
    char buf_1[16];
    char buf_2[16];

    if(recv(sockfd,buf,32,0)<0)         //服务器回复。进行什么功能
    {
        perror("recv");
        return ;
    }
    printf("%s\n",buf);

    sprintf(buf_2,"%d",id);
    if(send(sockfd,buf_2,2,0)<0)     //告诉服务器你的id
    {
        perror("send");
        return ;
    }
    
    if(recv(sockfd,buf_1,16,0)<0)         //服务器回复查询到的单号有几个
    {
        perror("recv");
        return ;
    }

    i=atoi(buf_1);
    if(i==0)
    {
        printf("未查询到您有单号\n");
        return ;
    }
    for(int j=0;j<i;j++)
    {
        if(recv(sockfd,buf_2,16,0)<0)
        {
            perror("recv");
            return ;
        }
        printf("%d.单号:%s\n",j+1,buf_2);
    }
    my_system();
    return ;

}

/*查询物流点*/
void search_point(int sockfd,int id)
{
    char buf[32];
    char buf_1[24];
    point p;
    if(recv(sockfd,buf,32,0)<0)         //服务器回复,进入物流点查询,请输入要查询的区域
    {
        perror("recv");
        return ;
    }
    printf("%s\n",buf);
    //getchar();
    printf("请输入要查询的物流点：\n");
    scanf("%s",buf_1);          //请输入你所在的地区
    if(send(sockfd,buf_1,24,0)<0)     
    {
        perror("send");
        return ;
    }

    if(recv(sockfd,&p,sizeof(point),0)<0)        //收到物流点信息
    {
        perror("recv");
        return ;
    }
    if(strcmp(p.district,"无")==0)
    {
        printf("未查询到该地区的物流点\n");
        return ;
    }
    else
    {
        printf("区域：%s\n",buf_1);
        printf("物流公司：%s\n",p.film);
        printf("联系电话：%d\n",p.phone);
        printf("详细地址：%s\n",p.location);
    }
    my_system();
    return ;
}

/*费用查询*/
void search_fee(int sockfd,int id)
{
    //int i=0;
    char buf[32];
    char buf_1[16];
    fee p;
    int q=0;
    if(recv(sockfd,buf,32,0)<0)         //服务器回复。进行查询单号功能
    {
        perror("recv");
        return ;
    }

    printf("请输入单号查询\n");
    scanf("%d",&q);
    sprintf(buf_1,"%d",q);
    if(send(sockfd,buf_1,16,0)<0)     
    {
        perror("send");
        return ;
    }

    if(recv(sockfd,&p,sizeof(fee),0)<0)       //收到快递费用         
    {
        perror("recv");
        return ;
    }
    if(p.c<0)
    {
        printf("输入单号错误,未查询到费用\n");
    }
    else
    {
        printf("快递公司：%s\n",p.film);
        printf("快递费用：%f\n",(p.c)*2.9);
        printf("预计到达时间：%s\n",p.time);
    }
    my_system();
    return ;
}

/*物流位置查询*/
void search_location(int sockfd,int id)
{
    int q=0;
    char buf[32];
    char buf_1[16];
    trace p;

    if(recv(sockfd,buf,32,0)<0)         //服务器回复。进行查询单号功能
    {
        perror("recv");
        return ;
    }
    printf("请输入单号查询\n");

    scanf("%d",&q);
    sprintf(buf_1,"%d",q);
    if(send(sockfd,buf_1,16,0)<0)           
    {
        perror("send");
        return ;
    }
    if(recv(sockfd,&p,sizeof(trace),0)<0)         //收到具体位置，与接收情况
    {
        perror("recv");
        return ;
    }
    if(p.id<=0)
    {
        printf("输入单号错误，未查寻到当前状况\n");
        return ;
    }
    else 
    {
        printf("当前位置:%s\n",p.location);
        printf("接收情况:%s\n",p.status);
    }
    my_system();
    return ;

}

/*修改用户账号*/
int modfiy_user(int sockfd,int id)
{
    int i = 0;
    char buf[5];
    char buf_1[33];
    char buf_2[16];
    char buf_3[25];
    char buf_4[32];

    if(recv(sockfd,buf_4,33,0)<0)         //服务器回复，进行账号修改
    {
        perror("recv");
        return -1;
    }
    printf("%s\n",buf_4);

    printf("1.注销账号\n");
    printf("2.修改密码\n");
    scanf("%d", &i);
    //sprintf(buf, "%d", i); 
    switch (i)
    {
    case 1:
    {
        sprintf(buf, "%d", i);
        int ret = send(sockfd, buf, sizeof(i), 0); // 发送功能请求
        if (ret < 0)
        {
            perror("send");
            return -1;
        }
        char buf_1[32] = {0};
        ret = recv(sockfd, buf_1, sizeof(buf_1) - 1, 0); // 账号注销成功否
        if (ret < 0)
        {
            perror("recv");
            return -1;
        }
        printf("%s\n", buf_1);
        if (strcmp(buf_1, "注销账号成功") == 0)
        {
            return 15;
        }
    }
    break;
    case 2:
    {
        sprintf(buf, "%d", i);
        int ret = send(sockfd, buf, sizeof(i), 0);
        if (ret < 0)
        {
            perror("send");
            return -1;
        }
        ret = recv(sockfd, buf_1, sizeof(buf_1)-1, 0); // 收到“服务器发来的要修改为的密码”
        if (ret < 0)
        {
            perror("recv");
            return -1;
        }
        printf("%s\n", buf_1);
        scanf("%s", buf_2);
        ret = send(sockfd, buf_2, sizeof(buf_2), 0);
        if (ret < 0)
        {
            perror("send");
            return -1;
        }
        ret = recv(sockfd, buf_3, sizeof(buf_3), 0); // 密码修改成功否
        if (ret < 0)
        {
            perror("recv");
            return -1;
        }
        printf("%s\n", buf_3);
        if (strcmp(buf_3, "修改密码成功") == 0)
        {
            return 1;
        }
    }
    break;
    }
    printf("修改失败\n");
    return -1;
}

void my_system()
{
    printf("按任意键继续......\n");
    getchar();
    getchar();
}
